package leetcode;

/**
 * @创建人 MBY381
 * @创建时间 2022/4/25 19:54
 * @描述
 *
 *剑指 Offer 04. 二维数组中的查找
 *
 * 给定一个 n 个元素有序的（升序）整型数组 nums 和一个目标值 target  
 * 写一个函数搜索 nums 中的 target，如果目标值存在返回下标，否则返回 -1。
 *

 */
public class Solution_jz04 {
    public static void main(String[] args) {

    }
    public static boolean f(int[][] matrix, int target){
        //优先判断特殊
        if(matrix.length == 0)
            return false;
        int n = matrix.length;
        if(matrix[0].length == 0)
            return false;
        int m = matrix[0].length;
        //从最左下角的元素开始往左或往上
        for(int i = n - 1, j = 0; i >= 0 && j < m; ){
            //元素较大，往上走
            if(matrix[i][j] > target)
                i--;
                //元素较小，往右走
            else if(matrix[i][j] < target)
                j++;
            else
                return true;
        }
        return false;
    }
    public static boolean findNumberIn2DArray(int[][] matrix, int target) {
        if(matrix.length == 0)
            return false;
        int n = matrix.length;
        if(matrix[0].length == 0)
            return false;
        int m = matrix[0].length;

        int x=0,y=n-1;
        while(x<m&&y>=0){
            int value=matrix[y][x];
            if(value>target){
                y--;
            }else if(value<target){
                x++;
            }else {
                return true;
            }
        }
        return false;
    }
}
